<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="lib/react.development.js"></script>
    <script src="lib/react-dom.development.js"></script>
    <script src="lib/babel.min.js"></script>
    <script src="lib/prop-types.js"></script>
</head>
<body>
<div id="root"></div>
</body>
<script type="text/babel">
    // 子组件接收父组件传递过来的属性时，可以对其类型进行限制
    // 1- 引入prop-types.js文件
    // 2- 在接收属性的组件中进行限制
    //    2-1:限制类型
    //    2-2:限制默认值
    const root = ReactDOM.createRoot(document.querySelector("#root"));

    class App extends React.Component {
        render(){
            return (
                <Child userName={"zhangpeiyue"} age={12} sex={"女"}></Child>
            )
        }
    }
    class Child extends React.Component{
        // 定义一个名字为propTypes的静态属性,值的类型是一个对象
        static propTypes = {
            // userName是组件要限制的属性名
            // PropTypes来自于prop-types.js文件
            userName:PropTypes.string,// 限制userName属性值的类型是一个字符串
            age:PropTypes.number.isRequired,// 限制age属性值的类型是一个数字且不允许为undefined
            // array func object
        }
        static defaultProps = {
            sex:"男"// 为属性sex增加默认值 男
        }
        render(){
            return (
                <div>
                    <p>userName:{this.props.userName}</p>
                    <p>age:{this.props.age}</p>
                    <p>sex:{this.props.sex}</p>
                </div>
            )
        }
    }

    root.render((
        <App></App>
    ))
</script>
</html>